not aim for perfect output from the beginning